iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0
Software Development

用leetcode系統化學習C語言系列 第 5

C 語言字元陣列與就地反轉

  • 分享至 

  • xImage
  •  

這幾篇我們從一維陣列的基本操作(Running Sum、Concatenation)練起,現在要把焦點放到"字元陣列"(字串)。
今天題目是經典的「反轉字串(Reverse String)」,重點在於如何在C裡操作char[]、如何就地(in-place)修改字串,以及雙指標技巧的運用,這些在未來處理字串與buffer操作會非常常用。

📖 題目說明
給一個字元陣列 s 與長度 sSize,請就地反轉陣列(也就是把字元順序顛倒),不需要回傳東西。
範例:
輸入: s = ['h','e','l','l','o'], sSize = 5
處理後 s = ['o','l','l','e','h']

🔑 解題要點
1.C裡的字串就是char陣列,沒有內建的「可變字串」物件,操作時要直接處理陣列索引。

2.就地反轉(in-place)意味著不申請新陣列,而是在原陣列上互換元素(節省記憶體)。

3.常用技巧是"雙指標"(two pointers):一個指向開頭,一個指向結尾,逐步交換直到相遇。

4.注意:sSize是字元數(不是C的\0字串長度問題),LeetCode提供的通常直接給陣列與大小。

🧠 心得
此題我學到函式傳入參數時可以把陣列寫成int*來接收,實際上就是用指標代表整個陣列;在回傳答案時,需要透過returnSize這種指標參數把長度帶回去,這讓我更清楚C語言在沒有物件或陣列型態可以直接回傳時,都是用指標來處理的設計方式。另外,建立新陣列時直接用大括號初始化{0}可以一次清空,這對於理解C語言操作陣列的基本功很有幫助。我覺得這題讓我把「指標」、「陣列」、「函式回傳值」這些基礎觀念串起來,開始能夠理解為什麼C常常需要透過指標來溝通不同函式之間的資料。
https://ithelp.ithome.com.tw/upload/images/20250919/20169489PRMdD6PIQH.png


上一篇
C 語言字串與變數操作
下一篇
熟悉 C 語言陣列
系列文
用leetcode系統化學習C語言12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言